package br.com.siscov.model.funcionario.bo;

import java.sql.Connection;

import br.com.siscov.exceptions.IntegrationException;
import br.com.siscov.model.funcionario.dao.AtendenteDAO;
import br.com.siscov.model.login.dao.LoginDAO;
import br.com.siscov.model.vo.AtendenteVo;

public class AtendenteBO extends DataAccessConnection {

	public void incluirAtendente(AtendenteVo atendenteVo) throws IntegrationException {
		Connection connection = obterConexao();
		AtendenteDAO atendenteDAO;
		LoginDAO loginDAO;
		try {
			iniciarTransacao(connection);
			atendenteDAO = new AtendenteDAO();
			loginDAO= new LoginDAO();
			
			atendenteDAO.incluirFuncionarioAtendente(connection, atendenteVo);
			loginDAO.incluirAcesso(connection, atendenteVo.getLoginVo());
			atendenteDAO.incluirAtendente(connection,atendenteVo.getMatricula(),atendenteVo.getLoginVo().getLogin());
					
			confirmarTransacao(connection);

		} catch (Exception e) {
			voltarTransacao(connection);

		}finally{
			closeConnection(connection);
		}
	}

	public void excluirAtendente(Integer matricula,String login) throws IntegrationException {
		AtendenteDAO atendenteDAO;
		LoginDAO loginDAO;
		Connection connection = obterConexao();
		try {
			iniciarTransacao(connection);
			atendenteDAO = new AtendenteDAO();
			loginDAO= new LoginDAO();
			
			loginDAO.excluirLogin(login);
			atendenteDAO.excluirAtendente(connection,matricula,login);
			atendenteDAO.excluirFuncionarioAtendente(connection, matricula);
			confirmarTransacao(connection);

		} catch (Exception e) {
			voltarTransacao(connection);

		}finally{
			closeConnection(connection);
		}
	}

	public AtendenteVo obterAtendente(Integer matricula) throws IntegrationException {
		AtendenteDAO atendenteDAO=null;
		AtendenteVo atendenteVo=null;
		try {
			atendenteDAO = new AtendenteDAO();
			atendenteVo = new AtendenteVo();
			atendenteVo = atendenteDAO.obterAtendente(matricula);
		
			return atendenteVo;
		} catch (Exception e) {
			throw new IntegrationException(e.getMessage());
		}
		

	}

	public void alterarAtendente(AtendenteVo atendenteVo) throws IntegrationException {
		Connection connection = obterConexao();
		AtendenteDAO atendenteDAO;
		LoginDAO loginDAO;
		try {
			iniciarTransacao(connection);
			atendenteDAO = new AtendenteDAO();
			loginDAO= new LoginDAO();
			
			atendenteDAO.alterarFuncionarioAtendente(connection, atendenteVo);
			loginDAO.alterarAcesso(connection, atendenteVo.getLoginVo());
			atendenteDAO.alterarAtendente(connection, atendenteVo.getMatricula(), atendenteVo.getLoginVo().getLogin());
					
			confirmarTransacao(connection);

		} catch (Exception e) {
			voltarTransacao(connection);

		}finally{
			closeConnection(connection);
		}
	}
 

}
